﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace LazyKex
{
    class Program
    {

       

        static void Main(string[] args)
        {

            Console.WriteLine("Olá, seja bem-vindo ao compilador LazyK da Computex Empreendimentos.");
            Console.WriteLine("Pretendemos levar-lhe a uma experiência inigualável em termos de compilação e execução.");
            Console.WriteLine("Aperte os cintos, e aqui vamos nós!");
            string fileContent = GetFileContent();

            LazyKDislexic disLexic = new LazyKDislexic(fileContent);
            SyntaticLazyKex syntatic = new SyntaticLazyKex(disLexic);

            try
            {
                if (syntatic.TryAnalyse())
                {
                    File.WriteAllText("lazy-compiladex.c", syntatic.GetCode());
                    Console.WriteLine("Arquivo lazy-compilade.c criado com sucesso!");
                }
                else
                {
                    Console.WriteLine("erro de compilação");
                    return;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("hum... a compilação deu tudo certo, mas na hora de criar o arquivo deu pau!");
                return;
            }


        }

        private static string GetFileContent()
        {
            Console.WriteLine("Qual o arquivo você pretende compilar?");
            string path = Console.ReadLine();
            
            try
            {
                return File.ReadAllText(path);
            }
            catch (Exception)
            {
                Console.WriteLine("hum... errinho lendo o arquivo, verifique se está na mesma pasta ou se você informou o endereço completo corretamente");
                Console.WriteLine("Vamos tentar de novo!");
                return GetFileContent();
            }


        }

    }
}
